package tests;

import java.io.File;
import java.util.LinkedList;

import contacts.Adressbuch;
import contacts.Person;

/**
 * Klasse testet ob der Import erfolgreich ist
 * 
 * @author Michi
 * 
 */
public class VCardImport {

	/**
	 * MemberData
	 * 
	 */

	File[] fileArray = new File[1];
	LinkedList<Person> PersonList = new LinkedList<Person>();
	String strVCard = "";
	String strPersonString = "";

	/**
	 * Konstruktor
	 */

	public VCardImport() {

		// Vergleichsobjekte
		Person test = new Person("Brandt", "Michael");
		test.setStreet("Seeweg 60");
		test.setCity("Höchberg");
		test.setZip("97204");
		test.setAdresse("Seeweg 60\n97204 Höchberg");
		test.setBirthday("1987-08-22");
		test.setTelefonhome("+49 9323 875566");
		test.setTelefonarbeit("+49 9323 877979");
		test.setFax("+49 157 72737279");
		test.setHandynummer("+49 157 75757972");
		test.setEmail("brandt-michael@live.com");
		PersonList.add(test);

		// Files in das Array schreiben

		fileArray[0] = new File(
				"/Users/Michi/Documents/workspace/SoftwarePraktikum1213/testData/vCards/Import/MichaelBrandt.vcf");

		for (int i = 0; i < fileArray.length; i++) {

			if (compareVCards(fileArray[i], PersonList.get(i))) {
				System.out.println("Gesamttest: Passed");

			} else {
				System.out.println("Gesamttest: Failed");
				System.out.println("");
				System.out.println(getStrPersonString());
				System.out.println("");
				System.out.println(getStrVCard());
			}
		}

	}

	/**
	 * Methode vergleicht 2 vCards und gibt true zurueck falls diese identisch
	 * sind
	 * 
	 * @param vcard
	 *            vCard, die importiert wird
	 * @param soll
	 *            String der beim Import rauskommen sollte
	 * @return true, falls gleiche Werte auftreten
	 */

	public boolean compareVCards(File vcard, Person soll) {

		boolean b = false;

		File[] file = new File[1];
		file[0] = vcard;
		Adressbuch ab = new Adressbuch("TestBuch");
		ab.addPerson(file, null);
		strVCard = ab.getPerson(0).toString();
		strPersonString = soll.toString();

		if (ab.getPerson(0).getVorname().equals(soll.getVorname())) {
			System.out.println("Vorname: passed");
		} else {
			System.out.println("Vorname: failed");
		}

		if (ab.getPerson(0).getName().equals(soll.getName())) {
			System.out.println("Name: passed");
		} else {
			System.out.println("Name: failed");
		}

		if (ab.getPerson(0).getAdresse().equals(soll.getAdresse())) {
			System.out.println("Adresse: passed");
		} else {
			System.out.println("Adresse: failed");
		}

		if (ab.getPerson(0).getEmail().equals(soll.getEmail())) {
			System.out.println("Email: passed");
		} else {
			System.out.println("Email: failed");
		}

		if (ab.getPerson(0).getTelefonhome().equals(soll.getTelefonhome())) {
			System.out.println("Home: passed");
		} else {
			System.out.println("Home: failed");
		}

		if (ab.getPerson(0).getTelefonarbeit().equals(soll.getTelefonarbeit())) {
			System.out.println("Arbeit: passed");
		} else {
			System.out.println("Arbeit: failed");
		}

		if (ab.getPerson(0).getHandynummer().equals(soll.getHandynummer())) {
			System.out.println("Mobil: passed");
		} else {
			System.out.println("Mobil: failed");
		}

		if (ab.getPerson(0).getFax().equals(soll.getFax())) {
			System.out.println("Fax: passed");
		} else {
			System.out.println("Fax: failed");
		}

		if (ab.getPerson(0).getBirthday().equals(soll.getBirthday())) {
			System.out.println("Geburtstag: passed");
		} else {
			System.out.println("Geburtstag: failed");
		}

		if (strVCard.equals(strPersonString)) {
			b = true;
		}

		return b;
	}

	public static void main(String[] args) {
		new VCardImport();
	}

	/**
	 * Getter & Setter
	 */

	public File[] getFileArray() {
		return fileArray;
	}

	public void setFileArray(File[] fileArray) {
		this.fileArray = fileArray;
	}

	public LinkedList<Person> getPersonList() {
		return PersonList;
	}

	public void setPersonList(LinkedList<Person> personList) {
		PersonList = personList;
	}

	public String getStrVCard() {
		return strVCard;
	}

	public void setStrVCard(String strVCard) {
		this.strVCard = strVCard;
	}

	public String getStrPersonString() {
		return strPersonString;
	}

	public void setStrPersonString(String strPersonString) {
		this.strPersonString = strPersonString;
	}

}
